package com.jy.wms.service;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.jy.wms.common.UUIDUtils;
import com.jy.wms.common.annotions.BaseServiceDescribe;
import com.jy.wms.common.base.BaseService;
import com.jy.wms.common.base.ServiceException;
import com.jy.wms.dao.WmsProductCategoryMapper;
import com.jy.wms.pojo.WmsProductCategory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
 * 订单量汇总报表
 * @author hgl
 * 2018-4-12
 * */
@Service
public class WmsProductCategorysService extends BaseService<WmsProductCategoryMapper,WmsProductCategory>{
    @Resource
    private WmsProductCategoryMapper wmsProductCategoryMapper;

    /**
     * 分页查询
     * @param entity 实体
     * @return List<WmsProductWarning>
     * */
    @BaseServiceDescribe(moduleName = "订单量汇总报表", btnName = "分页查询")
    public Page<WmsProductCategory> baseSelectPage(WmsProductCategory entity) throws ServiceException {
        Page<WmsProductCategory> list=null;
        double zlzb=0;
        String yfxse=null;
        int zs=0;
        double xse=0;
        //int ddl=0;
        //int ydl=0;
        //int xs=0;
        double yfhj=0;
        double  yx=0;
        try {
            PageHelper.startPage(entity.getPage(), entity.getRows());
            //分页查询
            list=(Page<WmsProductCategory>)dao.baseSelectPage(entity);
            WmsProductCategory productCategory=new WmsProductCategory();
            for(WmsProductCategory wmsProductCategory:list){
                /*String yf=yfjs(wmsProductCategory.getCkid(),wmsProductCategory.getZlid()).toString();
                wmsProductCategory.setYf(Double.parseDouble(yf));
                if(wmsProductCategory.getYf()>0&&wmsProductCategory.getXse()>0){
                    yx=wmsProductCategory.getYf()/wmsProductCategory.getXse();
                }else{
                    yx=0;
                }

                BigDecimal a = new BigDecimal(yx);
                yx = a.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
                System.out.println("yx==="+yx);
                wmsProductCategory.setYfxse(yx);
                //运单量
                int ydles=dao.Ydl(null,wmsProductCategory.getCkid(),wmsProductCategory.getZlid());
                wmsProductCategory.setYdl(ydles);
                //箱数
                int xss=dao.Xs(null,wmsProductCategory.getCkid(),wmsProductCategory.getZlid());
                wmsProductCategory.setXs(xss);
                //支数
                int zses=dao.Zs(null,wmsProductCategory.getCkid(),wmsProductCategory.getZlid());
                wmsProductCategory.setZs(zses);*/
                //支数合计
                if(wmsProductCategory.getZs()!=null){
                    int zss=wmsProductCategory.getZs();
                    zs+=zss++;
                }
                //wmsProductCategory.setZshj(zs);
                //销售额合计
                double xses=0;
                if(wmsProductCategory.getXse()==0){
                    xses= 0.00;
                }else{
                    xses= wmsProductCategory.getXse();
                }
                xse+=xses++;
                //wmsProductCategory.setXsehj(xse);
                //订单量合计
                //ddl=dao.Dhj(null,wmsProductCategory.getCkid(),entity.getCplb());
                //wmsProductCategory.setDdlhj(ddl);
                //运单量合计
                //ydl=dao.Yhj(null,wmsProductCategory.getCkid(),entity.getCplb());
                //wmsProductCategory.setYdlhj(ydl);
                //箱数合计
                //xs=dao.Xhj(null,wmsProductCategory.getCkid(),entity.getCplb());
                //wmsProductCategory.setXshj(xs);
                //运费合计
                yfhj+=wmsProductCategory.getYf();
            }
            //计算合计
            WmsProductCategory jshj= dao.hj(entity.getCjsj_start());

            BigDecimal b = new BigDecimal(yfhj);
            yfhj = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
            BigDecimal c = new BigDecimal(xse);
            xse = c.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
            productCategory.setZj("总计");
            productCategory.setYf(yfhj);
            productCategory.setZs(zs);
            productCategory.setXse(xse);
            productCategory.setDdl(jshj.getDdl());
            productCategory.setYdl(jshj.getYdl());
            productCategory.setXs(jshj.getXs());
            list.add(productCategory);
            return list;
        }catch (Exception e){
            e.printStackTrace();
            throw new ServiceException("订单量汇总报表分页查询失败", e);
        }
    }

    /**
     * 计算运费
     */
    public Double yfjs(String ckid,String hpid,String cjsj){
        Double zyf=0.00;
        List<WmsProductCategory> hpzl=dao.dghpzl(ckid,hpid,cjsj);
        for(WmsProductCategory fx:hpzl){
            WmsProductCategory sozl=dao.sozzl(fx.getSoid(),cjsj);
            if(sozl.getYf()>0){
                Double zb= fx.getZzl()/sozl.getZzl();
                zyf+=Double.parseDouble(new DecimalFormat("#.00").format(zb*sozl.getYf()));
            }
        }
        return zyf;
    }

    @BaseServiceDescribe(moduleName = "定时任务",btnName = "订单量汇总")
    @Transactional
    public Integer ProvincialTimer(){
        DecimalFormat df = new DecimalFormat("#.00");
        double  yx=0;
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
        Date date = new Date();
        Calendar c = Calendar.getInstance();
        c.add(Calendar.MONTH, -1);    //得到前一个月
        //String start = format.format(date);
        String start="2018-08";
        System.out.println(start);
        List<WmsProductCategory> list=dao.MonthlyStatistics(start);
        for(WmsProductCategory wmsProductCategory:list){
            String yf=yfjs(wmsProductCategory.getCkid(),wmsProductCategory.getZlid(),start).toString();
            wmsProductCategory.setId(UUIDUtils.uuid());
            wmsProductCategory.setCplb(wmsProductCategory.getCplb());
            wmsProductCategory.setDdl(wmsProductCategory.getDdl());
            wmsProductCategory.setZlid(wmsProductCategory.getZlid());
            //运单量
            int ydles=dao.Ydl(start,wmsProductCategory.getCkid(),wmsProductCategory.getZlid());
            wmsProductCategory.setYdl(ydles);
            //箱数
            int xss=dao.Xs(start,wmsProductCategory.getCkid(),wmsProductCategory.getZlid());
            wmsProductCategory.setXs(xss);
            //支数
            int zses=dao.Zs(start,wmsProductCategory.getCkid(),wmsProductCategory.getZlid());
            wmsProductCategory.setZs(zses);
            wmsProductCategory.setXse(wmsProductCategory.getXse());
            wmsProductCategory.setCkid(wmsProductCategory.getCkid());
            wmsProductCategory.setYf(Double.parseDouble(yf));
            if(wmsProductCategory.getYf()>0&&wmsProductCategory.getXse()>0){
                yx= wmsProductCategory.getYf()/wmsProductCategory.getXse();
            }else{
                yx= 0;
            }
            BigDecimal a = new BigDecimal(yx);
            yx = a.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
            wmsProductCategory.setYfxse(yx);
            dao.baseInsert(wmsProductCategory);
        }
        return null;
    }

    /**
     * 导出订单量汇总信息
     *
     * @param entity
     * @return
     */
    @BaseServiceDescribe(moduleName = "导出报表",btnName = "导出订单量汇总报表")
    public List<WmsProductCategory>  exportWmsProductCategory(WmsProductCategory entity){
        DecimalFormat df = new DecimalFormat("#.00");
        List<WmsProductCategory> list=dao.exportWmsProductCategory(entity);
            /*for(WmsProductCategory wmsProductCategory:list){
                String yf=yfjs(wmsProductCategory.getCkid(),wmsProductCategory.getZlid()).toString();
                wmsProductCategory.setYf(Double.parseDouble(yf));
                double  yx= 0;
                if(wmsProductCategory.getYf()>0&&wmsProductCategory.getXse()>0){
                    yx=wmsProductCategory.getYf()/wmsProductCategory.getXse();
                }else{
                    yx=0;
                }
                BigDecimal a = new BigDecimal(yx);
                yx = a.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
                wmsProductCategory.setYfxse(yx);
                //运单量
                int ydles=dao.Ydl(null,wmsProductCategory.getCkid(),wmsProductCategory.getZlid());
                wmsProductCategory.setYdl(ydles);
                //箱数
                int xss=dao.Xs(null,wmsProductCategory.getCkid(),wmsProductCategory.getZlid());
                wmsProductCategory.setXs(xss);
                //支数
                int zses=dao.Zs(null,wmsProductCategory.getCkid(),wmsProductCategory.getZlid());
                wmsProductCategory.setZs(zses);
            }
*/
        return  list;
    }
}
